﻿using System;
using System.Collections.Generic;
using System.Text;

namespace AzManADAMStore
{
    /// <summary>
    /// Clase que encapsula un grupo de usuarios
    /// </summary>
    public class Group
    {
        /// <summary>
        /// Path en ADAM
        /// </summary>
        public string Path;

        /// <summary>
        /// Nombre de la operación
        /// </summary>
        public string Name;

        /// <summary>
        /// Descripción de la operación
        /// </summary>
        public string Description;

        /// <summary>
        /// Consulta LDAP
        /// </summary>
        public string LDAPQuery;


        public Group()
        {
        }


        /// <summary>
        /// Crea una instancia con los mismos valores
        /// </summary>
        /// <returns></returns>
        public Group Clone()
        {
            Group newGroup = new Group();
            this.Copy(newGroup);
            return newGroup;
        }

        /// <summary>
        /// Copia los valores de la instancia actual
        /// </summary>
        /// <param name="NuevoOperation">Instancia de destino</param>
        public void Copy(Group NuevoGroup)
        {
            NuevoGroup.Path = this.Path;
            NuevoGroup.Name = this.Name;
            NuevoGroup.Description = this.Description;
            NuevoGroup.LDAPQuery = this.LDAPQuery;
        }


        /// <summary>
        /// Lista de operaciones
        /// </summary>
        public class GroupList : SortedDictionary<string, Group>
        {
            /// <summary>
            /// Crea una instancia con los mismos valores
            /// </summary>
            /// <returns></returns>
            public GroupList Clone()
            {
                GroupList newLista = new GroupList();
                foreach (Group actualGroup in this.Values)
                    newLista.Add(actualGroup.Name, actualGroup.Clone());

                return newLista;
            }

        }
    }
}
